package com.shujia.abstract_;

/*
抽象类其实是一个模板, 主要的作用是给子类提供服务的
 */
public abstract class Person {
    // 成员变量，成员方法，常量，构造方法，静态方法，代码块，静态代码块都可以
    protected String name;

    protected final String COUNTRY = "中国";

    protected static final int AGE = 20;

    {
        System.out.println("非静态代码块");
    }

    static {
        System.out.println("静态代码块");
    }


    public Person() {
        System.out.println("person 构造方法...");
    }

    public static void show() {
        System.out.println(AGE);
    }


    public void eat() {
        System.out.println("person eat..");
    }


    /*
    抽象类里面可以定义抽象方法, 使用abstract修饰方法
    抽象方法没有方法体, 只定义,不实现
    意义:
    规定了子类必须要重写这个方法
    private , final, static 和 abstract 互斥的
     */
    public abstract void run();


    public abstract void jump();


}
